import configureStore from "stores/index";
import { getWsUrl } from "share/utils";
import ReconnectingWebSocket from "reconnectingwebsocket";
const defaultCanonScanConfig = {
  // 每次 post 的 key，上传时，作为参数，可以用来确定哪次操作的依据
  key: "",
  // 电子文件上传地址
  uploadIp: `${location.origin}/api/finance/receipt/rolling`,
  // 消息获取地址
  msgIp: `${location.origin}/api/finance/receipt/rolling`,
  // 调用类型， init： 获取扫描仪驱动是否安装， scan： 驱动扫描
  type: "init",
  // post header 中的 authorization 信息
  authorization: `BearerSPACE${configureStore.store.getState().main.authToken.access_token}`,
  // 彩色或黑白  1 / 0
  color: "1",
  // 分辨率
  dpi: "300",
  // 文件类型  jpg / tif
  file: "jpg",
  // 扫描幅面  auto / a3 / a4
  size: "auto",
  // 旋转角色  0 / 90 / 180 / 270
  rotate: "0",
  // 自动剪切
  deskew: "1",
  // 平滑处理
  skip: "0",
  // 翻转处理
  back: "1",
  // 是否显示扫描参数UI界面
  showUI: "0",
  // 扫描模式： 1， 单页， 2. 双页， 3. 双页（自动去空白）， 4. 对折
  mode: "1",
  // 是否自动结束扫描， 0. 除非手动点击了服务UI上的结束扫描（否则不主动发送结束扫描服务）， 1. 扫描仪判定没有纸张了，只要没纸了就结束扫描消息，
  // 当autoClose为0 时，scanserver 服务界面上允许点击 继续扫描按钮，当纸张没纸后，可以让操作人员继续放纸后，点继续扫描，否则 需要从 BS 页面上再次触发调用server的方法，不然不会再次扫描
  autoClose: "0",
};

export default {
  startScan(params = {}) {
    let canonScanConfig = {
      ...defaultCanonScanConfig,
      ...params,
    };
    let iframe = document.createElement("iframe");
    iframe.hidden = true;
    try {
      iframe.src = "canonScanServerNet://" + JSON.stringify(canonScanConfig);
      document.body.append(iframe);
      setTimeout(() => {
        document.body.removeChild(iframe);
      }, 2000);
    } catch (e) {}
  },
  initWebSocket({ onOpen = () => {}, onError = () => {}, onMessage = () => {}, onClose = () => {} }) {
    let url = getWsUrl("/ws/finance/receipt/scan");
    let connector = new ReconnectingWebSocket(url);

    connector.onopen = onOpen;
    connector.onerror = onError;
    connector.onmessage = onMessage;
    connector.onclose = onClose;
    return connector;
  },
};
